@@ -100,7 +100,8 @@ module Agents |
||
| 100 | 100 |
if interpolated['secrets'].include?(params['secret']) |
| 101 | 101 |
items = received_events.order('id desc').limit(events_to_show).map do |event|
|
| 102 | 102 |
interpolated = interpolate_options(options['template']['item'], event) |
| 103 |
- interpolated['guid'] = event.id |
|
| 103 |
+ interpolated['guid'] = {'_attributes' => {'isPermaLink' => 'false'},
|
|
| 104 |
+ '_contents' => interpolated['guid'].presence || event.id} |
|
| 104 | 105 |
date_string = interpolated['pubDate'].to_s |
| 105 | 106 |
date = |
| 106 | 107 |
begin |
@@ -125,8 +126,9 @@ module Agents |
||
| 125 | 126 |
else |
| 126 | 127 |
content = Utils.unindent(<<-XML) |
| 127 | 128 |
<?xml version="1.0" encoding="UTF-8" ?> |
| 128 |
- <rss version="2.0"> |
|
| 129 |
+ <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
|
| 129 | 130 |
<channel> |
| 131 |
+ <atom:link href="#{feed_link.encode(:xml => :text)}/users/#{user.id}/web_requests/#{id || '<id>'}/#{params['secret']}.xml" rel="self" type="application/rss+xml" />
|
|
| 130 | 132 |
<title>#{feed_title.encode(:xml => :text)}</title>
|
| 131 | 133 |
<description>#{feed_description.encode(:xml => :text)}</description>
|
| 132 | 134 |
<link>#{feed_link.encode(:xml => :text)}</link>
|
@@ -117,8 +117,9 @@ describe Agents::DataOutputAgent do |
||
| 117 | 117 |
expect(content_type).to eq('text/xml')
|
| 118 | 118 |
expect(content.gsub(/\s+/, '')).to eq Utils.unindent(<<-XML).gsub(/\s+/, '') |
| 119 | 119 |
<?xml version="1.0" encoding="UTF-8" ?> |
| 120 |
- <rss version="2.0"> |
|
| 120 |
+ <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
|
| 121 | 121 |
<channel> |
| 122 |
+ <atom:linkhref="https://yoursite.com/users/#{agent.user.id}/web_requests/#{agent.id}/secret1.xml" rel="self" type="application/rss+xml"/>
|
|
| 122 | 123 |
<title>XKCD comics as a feed</title> |
| 123 | 124 |
<description>This is a feed of recent XKCD comics, generated by Huginn</description> |
| 124 | 125 |
<link>https://yoursite.com</link> |
@@ -131,7 +132,7 @@ describe Agents::DataOutputAgent do |
||
| 131 | 132 |
<description>Secret hovertext: Something else</description> |
| 132 | 133 |
<link>http://imgs.xkcd.com/comics/evolving0.png</link> |
| 133 | 134 |
<pubDate>#{Time.zone.parse(event3.payload['date']).rfc2822}</pubDate>
|
| 134 |
- <guid>#{event3.id}</guid>
|
|
| 135 |
+ <guid isPermaLink="false">#{event3.id}</guid>
|
|
| 135 | 136 |
</item> |
| 136 | 137 |
|
| 137 | 138 |
<item> |
@@ -139,7 +140,7 @@ describe Agents::DataOutputAgent do |
||
| 139 | 140 |
<description>Secret hovertext: Something else</description> |
| 140 | 141 |
<link>http://imgs.xkcd.com/comics/evolving2.png</link> |
| 141 | 142 |
<pubDate>#{event2.created_at.rfc2822}</pubDate>
|
| 142 |
- <guid>#{event2.id}</guid>
|
|
| 143 |
+ <guid isPermaLink="false">#{event2.id}</guid>
|
|
| 143 | 144 |
</item> |
| 144 | 145 |
|
| 145 | 146 |
<item> |
@@ -147,7 +148,7 @@ describe Agents::DataOutputAgent do |
||
| 147 | 148 |
<description>Secret hovertext: Biologists play reverse Pokemon, trying to avoid putting any one team member on the front lines long enough for the experience to cause evolution.</description> |
| 148 | 149 |
<link>http://imgs.xkcd.com/comics/evolving.png</link> |
| 149 | 150 |
<pubDate>#{event1.created_at.rfc2822}</pubDate>
|
| 150 |
- <guid>#{event1.id}</guid>
|
|
| 151 |
+ <guid isPermaLink="false">#{event1.id}</guid>
|
|
| 151 | 152 |
</item> |
| 152 | 153 |
|
| 153 | 154 |
</channel> |
@@ -170,7 +171,7 @@ describe Agents::DataOutputAgent do |
||
| 170 | 171 |
'title' => 'Evolving yet again with a past date', |
| 171 | 172 |
'description' => 'Secret hovertext: Something else', |
| 172 | 173 |
'link' => 'http://imgs.xkcd.com/comics/evolving0.png', |
| 173 |
- 'guid' => event3.id, |
|
| 174 |
+ 'guid' => {"contents" => event3.id, "isPermaLink" => "false"},
|
|
| 174 | 175 |
'pubDate' => Time.zone.parse(event3.payload['date']).rfc2822, |
| 175 | 176 |
'foo' => 'hi' |
| 176 | 177 |
}, |
@@ -178,7 +179,7 @@ describe Agents::DataOutputAgent do |
||
| 178 | 179 |
'title' => 'Evolving again', |
| 179 | 180 |
'description' => 'Secret hovertext: Something else', |
| 180 | 181 |
'link' => 'http://imgs.xkcd.com/comics/evolving2.png', |
| 181 |
- 'guid' => event2.id, |
|
| 182 |
+ 'guid' => {"contents" => event2.id, "isPermaLink" => "false"},
|
|
| 182 | 183 |
'pubDate' => event2.created_at.rfc2822, |
| 183 | 184 |
'foo' => 'hi' |
| 184 | 185 |
}, |
@@ -186,7 +187,7 @@ describe Agents::DataOutputAgent do |
||
| 186 | 187 |
'title' => 'Evolving', |
| 187 | 188 |
'description' => 'Secret hovertext: Biologists play reverse Pokemon, trying to avoid putting any one team member on the front lines long enough for the experience to cause evolution.', |
| 188 | 189 |
'link' => 'http://imgs.xkcd.com/comics/evolving.png', |
| 189 |
- 'guid' => event1.id, |
|
| 190 |
+ 'guid' => {"contents" => event1.id, "isPermaLink" => "false"},
|
|
| 190 | 191 |
'pubDate' => event1.created_at.rfc2822, |
| 191 | 192 |
'foo' => 'hi' |
| 192 | 193 |
} |
@@ -256,7 +257,7 @@ describe Agents::DataOutputAgent do |
||
| 256 | 257 |
'title' => 'Evolving', |
| 257 | 258 |
'description' => 'Secret hovertext: Biologists play reverse Pokemon, trying to avoid putting any one team member on the front lines long enough for the experience to cause evolution.', |
| 258 | 259 |
'link' => 'http://imgs.xkcd.com/comics/evolving.png', |
| 259 |
- 'guid' => event.id, |
|
| 260 |
+ 'guid' => {"contents" => event.id, "isPermaLink" => "false"},
|
|
| 260 | 261 |
'pubDate' => event.created_at.rfc2822, |
| 261 | 262 |
'enclosure' => {
|
| 262 | 263 |
"type" => "audio/mpeg", |
@@ -291,8 +292,9 @@ describe Agents::DataOutputAgent do |
||
| 291 | 292 |
expect(content_type).to eq('text/xml')
|
| 292 | 293 |
expect(content.gsub(/\s+/, '')).to eq Utils.unindent(<<-XML).gsub(/\s+/, '') |
| 293 | 294 |
<?xml version="1.0" encoding="UTF-8" ?> |
| 294 |
- <rss version="2.0"> |
|
| 295 |
+ <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
|
| 295 | 296 |
<channel> |
| 297 |
+ <atom:linkhref="https://yoursite.com/users/#{agent.user.id}/web_requests/#{agent.id}/secret1.xml" rel="self" type="application/rss+xml"/>
|
|
| 296 | 298 |
<title>XKCD comics as a feed</title> |
| 297 | 299 |
<description>This is a feed of recent XKCD comics, generated by Huginn</description> |
| 298 | 300 |
<link>https://yoursite.com</link> |
@@ -316,7 +318,7 @@ describe Agents::DataOutputAgent do |
||
| 316 | 318 |
</first> |
| 317 | 319 |
</complex> |
| 318 | 320 |
</simpleNested> |
| 319 |
- <guid>#{event.id}</guid>
|
|
| 321 |
+ <guid isPermaLink="false">#{event.id}</guid>
|
|
| 320 | 322 |
</item> |
| 321 | 323 |
|
| 322 | 324 |
</channel> |